package com.dszq.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dszq.model.article.dtos.ArticleDto;
import com.dszq.model.article.dtos.ArticleHomeDto;
import com.dszq.model.article.dtos.ArticleInfoDto;
import com.dszq.model.article.mess.ArticleVisitStreamMess;
import com.dszq.model.article.pojos.ApArticle;
import com.dszq.model.common.dtos.ResponseResult;

public interface ApArticleService extends IService<ApArticle> {

    /**
     * 根据参数加载文章列表
     * @param loadType  1为加载更多  2为加载最新
     * @param articleHomeDto
     * @return
     */
    ResponseResult load(Short loadType, ArticleHomeDto articleHomeDto);

    /**
     * 保存文章的方法
     *
     * @param articleDto 文章数据传输对象，包含文章的全部或部分信息
     * @return ResponseResult 返回一个结果对象，通常包含操作是否成功、错误信息等
     */
    ResponseResult saveArticle(ArticleDto articleDto);

    /**
     * 删除文章
     *
     * @param id 文章的唯一标识符
     * @return 返回操作结果，包括操作是否成功、错误信息等
     */
    ResponseResult deleteArticle(Long id);
    /**
     * 提交文章行为数据并加载相关分析结果。
     *
     * @param articleInfoDto 文章信息数据传输对象，包含文章的详细行为数据。
     * @return 返回操作结果，包括操作是否成功、错误信息等。
     */
    ResponseResult loadArticleBehavior(ArticleInfoDto articleInfoDto);
    /**
     * 加载文章列表
     * @param dto
     * @param type  1 加载更多   2 加载最新
     * @param firstPage  true  是首页  flase 非首页
     * @return
     */
    public ResponseResult load2(ArticleHomeDto dto,Short type,boolean firstPage);

    /**
     * 更新文章的分值  同时更新缓存中的热点文章数据
     * @param mess
     */
    public void updateScore(ArticleVisitStreamMess mess);
}
